CloudWatch Synthetics GUIワークフロービルダーを使ってみた
CloudWatch Syntheticsとは?
CloudWatch Syntheticsとは、APIエンドポイントやWebページのモニタリングを自動で行ってくれるサービスです。
例えば、APIが正常に応答するか、Webページが正常に稼働しているか、Webページの見た目が変わっていないかといった、ユーザ目線でのアプリケーションのモニタリングを行うことができます。
公式ドキュメントはこちら
何ができるのか?
CloudWatch Syntheticsでは、Canaryというスクリプトを使ってモニタリングを行います。CanaryはNode.jsまたはPythonで記述できます。
スクリプトなので独自の処理を自由に記述してモニタリングを行うこともできますが、AWSがいくつかのテンプレートを設計図として用意してくれています。設計図を使えば、必要なパラメータを入力するだけで簡単にモニタリングを始めることができます。
2023/2/21現在、用意されている設計図は以下の6つです。
- ハートビートのモニタリング
- API Canary
- リンク切れチェッカー
- Canaryレコーダー
- GUIワークフロービルダー
- ビジュアルモニタリング
この記事では、この中のGUIワークフロービルダーを使ってみたいと思います。
GUIワークフロービルダーとは?
GUIワークフロービルダーは、Webページに対してテキスト入力やボタンクリックなどのアクションが行えるかどうかを検証するものです。例えばログインフォームがあるWebページの場合、ユーザIDとパスワードを入力してログインボタンを押すと、次のページに遷移するという処理が正常に動いているかを確認することができます。
早速やってみる
この記事の目標
この記事ではWordPressのログイン画面で試してみます。ユーザ名とパスワードを入力してログインボタンを押し、次の画面でヘッダーの「こんにちは、xxxさん」という要素が存在していればログイン成功とみなすことにします。
Canaryの作成
CloudWatchのページを開き、左ペインから「Synthetics Canaries」をクリックします。
このような画面が表示されます。「Canaryを作成」をクリックします。
「設計図を使用する」⇒「GUIワークフロービルダー」を選択します。
Canaryビルダーで名前、モニタリングするWebページのURL、そしてワークフロービルダーを入力します。
ワークフロービルダーは実際にその画面でユーザが行うであろう動作を一つ一つ登録していきます。今回の場合は以下のようになります。
- ユーザ名テキストボックスに入力
- パスワードテキストボックスに入力
- ログインボタンをクリック
- ログイン後のページで要素の存在を確認
※画像はNode.jsの場合です。Pythonを使う場合は記法が異なりますのでご注意ください。記法について、詳しくは公式ドキュメントを参照してください。
テキストボックスやログインボタンのidは開発者ツールなどで確認します。
スクリプトエディタでは、上で設定したCanaryビルダーに従って生成されたスクリプトが表示されています。もし、独自の処理を追加したい場合はスクリプトをカスタマイズすることもできます。
また、Node.jsではなくPythonを使いたいという場合は「ランタイムバージョン」から変更します。
スケジュールではモニタリングの実行スケジュールを設定できます。
「継続的に実行」では、1~60分間隔で実行、または毎日決まった時間に実行といった設定が行えます。もっと細かくスケジューリングしたい場合は「CRON式」を使用します。
この記事ではひとまず1回実行したいと思います。
Canaryの実行結果をどれくらい保存するか設定できます。1~455日の範囲で設定できます。ここではデフォルトのままにします。
Canaryが実行されると、実行中のスクリーンショットやログがS3に保存されます。「データストレージ」ではその保存場所を設定できます。デフォルトで入力されているので、ここでは特に変更しません。
また、S3に保存してCloudWatchにメトリクスを発行するためのIAMロールも必要になります。もし既存のロールがあれば選択します。ここでは新しく作成することにします。
その他のオプションはデフォルトのままにします。右下の「Canaryを作成」をクリックします。Canaryが実行され、1分ほど待つと自動的にCloudWatch Syntheticsの画面に戻ります。
実行結果の確認
Canaryが実行されると、CloudWatch Syntheticsの画面が以下のようになります。成功したことがわかります。
Canaryの名前をクリックします。この画面でCloudWatchメトリクスや、実行中のスクリーンショット、ログなどを詳しく確認することができます。
実行されたステップとステータス、実行時間や、
実行中のスクリーンショットも確認できます。
「ステップ」「スクリーンショット」「ログ」「HARファイル」の情報はすべて、Canaryを作成するときに指定したS3バケットに格納されているので、そちらから見ることもできます。
失敗したらどうなるか
パスワードを変更して再度Canaryを実行してみます。
今度はこのように赤く表示され、一目で失敗したことがわかります。
Canaryの名前をクリックすると、「問題」のセクションに1件表示されているのでクリックします。
ステップのどこで失敗したかがわかります。今回の場合、ログインに失敗したためログイン後ページにあるはずの「こんにちは、xxxさん」が存在せず、タイムアウトでエラーになっています。
パスワード入力エラーになった画面もスクリーンショットに残っているので、どこに問題があるのかを視覚的に特定することができます。
今回は設定していませんが、CloudWatchアラームと連携して、失敗したらSNSトピックで通知するといったことも可能です。
また、ワークフロービルダーに登録した処理は成功しても、独自の基準で判断してエラーにしたいといった場合は、スクリプトを編集することで失敗とすることができます。
おわりに
この記事ではCloudWatch Syntheticsのデフォルト設計図のうち、GUIワークフロービルダーを使ってみました。
ユーザの動作に関するモニタリングを少しの入力だけで簡単に実装することができる非常に便利なサービスだと思いました。スクリプトで細かくカスタマイズしたり、AWSの他のサービスと連携したりもできるので、GUIアプリケーションの開発においてユーザ体験を向上させるためにぜひとも使ってみたいサービスです。